# 学员功能界面系统
def print_info():
    print('-' * 20)
    print('欢迎登录学员管理系统')
    print('1: 添加学员')
    print('2: 删除学员')
    print('3: 修改学员信息')
    print('4: 查询学员信息')
    print('5: 显示所有学员信息')
    print('6: 退出系统')
    print('-' * 20)
print_info()
user_num = input('请选择您需要的功能序号：')
if user_num == '1':
    print('添加学员')
elif user_num == '2':
    print('删除学员')
elif user_num == '3':
    print('修改学员信息')
elif user_num == '4':
    print('查询学员信息')
elif user_num == '5':
    print('显示所有学员信息')
elif user_num == '6':
    print('退出系统')

# 每个判断都可以根据不同的代码来进行不同的操作




# 递归（基本上场景就是计算累加和）
# 函数内部⾃⼰调⽤⾃⼰
# 必须有出⼝
# 3 + 2 + 1
def sum_numbers(num):
    # 1.如果是1，直接返回1 -- 出⼝
    if num == 1:
    return 1
    # 2.如果不是1，重复执⾏累加并返回结果
    return num + sum_numbers(num-1)
sum_result = sum_numbers(3)
# 输出结果为6
print(sum_result)



# lambda表达式
# 语法：lambda 参数列表 ： 表达式

# 计算a+b
fn1 = lambda a, b: a + b
print(fn1(1, 2))

# lambda的参数形式
# 无参数
fn1 = lambda: 100
print(fn1())

# 一个参数
fn1 = lambda a: a
print(fn1('hello world'))

# 默认参数
fn1 = lambda a, b, c=100: a + b + c
print(fn1(10, 20))

# 可变参数*args
fn1 = lambda *args: args
print(fn1(10, 20, 30))

# 可变参数：**kwargs
fn1 = lambda **kwargs: kwargs
print(fn1(name='python', age=20))


# 高阶函数
# 绝对值：abs(-10) # 10
# round() 函数可以完成对数字的四舍五⼊计算。round(1.2) # 1
def sum_num(a, b, f):
    return f(a) + f(b)
result = sum_num(-1, 2, abs)
print(result) # 3

# map：map(func, lst)，将传⼊的函数变量func作⽤到lst变量的每个元素中，并将结果组成新的列表
list1 = [1, 2, 3, 4, 5]
def func(x):
    return x ** 2
result = map(func, list1)
print(result) # <map object at 0x0000013769653198>，对象
print(list(result)) # [1, 4, 9, 16, 25]

# reduce():func必须有两个参数。每次func计算的结果继续和序列的下⼀个元素做累积计算
import functools
list1 = [1, 2, 3, 4, 5]
def func(a, b):
    return a + b
result = functools.reduce(func, list1)
print(result) # 15

# filter()ilter(func, lst)函数⽤于过滤序列, 过滤掉不符合条件的元素, 返回⼀个 filter 对象
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def func(x):
    return x % 2 == 0
result = filter(func, list1)
print(result) # <filter object at 0x0000017AF9DC3198>
print(list(result)) # [2, 4, 6, 8, 10]